CoT (Chain-of-Thought)
これ何?わかりやすく
リンゴが23個ありました。そのうちの20個を食べた後に、食べすぎたと思って6個を買い直しました。
リンゴは今何個あるでしょうか?
これを考える時に
「23-20=3個になったね」
「3+6=9個になったね」
「じゃあ、今は9個あるよ」
という感じで、問題を解くまでに頭の中で考えている過程を示すもの
人間が数学の問題を解く時をイメージしてほしい。
いきなり答えを出すわけではなく、途中式を書くよね。
それで間違えにくくなる。
CoTプロンプティングを使うことで、中間的な推論ステップを介し、複雑な推論が可能となる。
どんな課題があったか?
大規模言語モデルは、単語の意味を理解することに関しては、一定以上の効果を上げている。
しかし、計算問題や常識問題など、思考過程が入る推論に関しては、十分な学習ができておらず、期待通りの結果を得られなかった。
Reasoningという論理的な思考能力が求められるタスクでは、Few-Shot プロンプトを用いても精度が期待するほど向上しないことが多かった。 どんな例で、ChatGPTは間違えるか?
このグループの奇数を合計すると、偶数になりますか?: 4, 8, 9, 15, 12, 2, 1
コインが表向きに置かれています。A氏はコインを1回ひっくり返しました。B氏はコインを2回ひっくり返しました。C氏はコインをひっくり返しませんでした。その後、3人がコインを1回ずつひっくり返しました。現在、コインは表向きになっているでしょうか?
Few-shot CoTとは?
Few-Shot promptingと組み合わせることで、より複雑なタスクでより良い結果を得ることができる。 Q: ロジャーは5つのテニスボールを持っていました。彼はさらに2缶のテニスボールを買いました。各缶には3つのテニスボールが入っています。彼は今、何個のテニスボールを持っていますか?
A: ロジャーは最初に5個のボールを持っていました。3つのテニスボールが入った缶を2缶買ったので、6個のテニスボールです。5+6 = 11。答えは11個です。
Q: カフェテリアには23個のリンゴがありました。ランチのために20個を使い、さらに6個を買ったとしたら、彼らは何個のリンゴを持っていますか?
このような形で、参考例を出してあげる
ただ、、、
人間が解き方を知っている必要がある。さらに
これをキーボーとに打ち込むのはめんどくさい...
もっと手軽に、CoTを活用できないのか?
Zero-shot CoTとは?
「ステップバイステップで考えて」と指示することで、CoTを実現させるテクニック
Few-Shot CoTプロンプトとは異なり、プロンプトには入力と出力の例をかかない。 具体例としては、以下のような指示になる。
リンゴが23個ありました。そのうちの20個を食べた後に、食べ過ぎたと思って6個を買い直しました。
リンゴは今何個あるでしょうか?
ステップバイステップで考えてみてください。
こうすることで、言語モデルからの出力に問題を解くためのCoTが含まれるようになり、正しい結果を得られるようになる。
Zero-Shotでうまくいかないときは、Few-Shotにするか、別のテクニックを使う。
資料